package main

import (
	"cmp"
	"strconv"
	"strings"
)

func compareVersion(version1 string, version2 string) int {
	a := strings.Split(version1, ".")
	b := strings.Split(version2, ".")
	n, m := len(a), len(b)
	for i := range max(n, m) {
		ver1 := 0
		if i < n {
			ver1, _ = strconv.Atoi(a[i])
		}
		ver2 := 0
		if i < m {
			ver2, _ = strconv.Atoi(b[i])
		}
		c := cmp.Compare(ver1, ver2)
		if c != 0 {
			return c
		}
	}
	return 0
}

// compareVersion 比较两个版本号字符串的大小
// 参数：
//   version1: 第一个版本号（如 "1.0.1"）
//   version2: 第二个版本号（如 "1.1"）
// 返回值：
//   1: version1 > version2
//   -1: version1 < version2
//   0: 两个版本号相等
//func compareVersion(version1, version2 string) int {
//	// 1. 按 "." 分割版本号为字符串数组
//	// 例如 "1.01.2" 会被分割为 ["1", "01", "2"]
//	a := strings.Split(version1, ".")
//	b := strings.Split(version2, ".")
//
//	// 记录两个版本号的段数（数组长度）
//	n, m := len(a), len(b)
//
//	// 2. 遍历所有可能的段，循环次数为两个版本号的最大段数
//	// 目的：确保短版本号的剩余段按 0 处理（如 "1.2" 与 "1.2.0" 视为相等）
//	maxLen := max(n, m)
//	for i := 0; i < maxLen; i++ {
//		// 3. 处理当前段的数值（默认值为 0，处理短版本号的缺省段）
//		ver1 := 0
//		if i < n {
//			// 将字符串段转为整数（自动忽略前导零，如 "0012" → 12）
//			// 题目保证输入是有效的版本号，因此忽略错误处理
//			ver1, _ = strconv.Atoi(a[i])
//		}
//
//		ver2 := 0
//		if i < m {
//			// 同理处理第二个版本号的当前段
//			ver2, _ = strconv.Atoi(b[i])
//		}
//
//		// 4. 比较当前段的数值
//		// cmp.Compare 返回值：
//		//   1: ver1 > ver2
//		//   -1: ver1 < ver2
//		//   0: 相等
//		cmpResult := cmp.Compare(ver1, ver2)
//		if cmpResult != 0 {
//			// 若当前段数值不同，直接返回比较结果（无需继续比较后续段）
//			return cmpResult
//		}
//	}
//
//	// 5. 所有段都比较完毕且相等，返回 0
//	return 0
//}
//
//// max 辅助函数：返回两个整数中的较大值
//func max(a, b int) int {
//	if a > b {
//		return a
//	}
//	return b
//}
